package zuochengyun.chapter5;

import java.util.Arrays;

//最长无重复字符的子串
public class LongestSubstringNORepeated {

	public int maxUnique(String str){
		if(str == null || str.equals("")){
			return 0;
		}
		char[] chas = str.toCharArray();
		int[] map = new int[256];
		//初始所有设为-1
		Arrays.fill(map, -1);
		int res = 0;
		int cur = 0;
		//记录最长无重复子串的前一个位置
		int pre = -1;
		for(int i = 0; i < chas.length; i++){
			//假设chas[i]上一次出现的位置为a, 我们就需要取a和pre靠右边的那个值
			pre = Math.max(pre, map[chas[i]]);
			cur = i - pre;
			res = Math.max(res, cur);
			map[chas[i]] = i;
		}
		return res;
	}
}
